﻿Imports TepcelDominio
Imports TepcelBL

Public Class frmUsuario
    Dim err As New System.Windows.Forms.ErrorProvider
    Dim listaUsuario As New List(Of Usuario)
    Dim EmpleadoBL As New EmpleadoBL
    Dim UsuarioBL As New UsuarioBL
    Private Sub frmUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call CargarGrid()
        txtBuscar.Focus()
    End Sub

    Private Sub clearError()
        err.SetError(CBEEmpleado, "")
        err.SetError(txtLoginUsuario, "")
        err.SetError(txtPasswordUsuario, "")
        err.SetError(CBHabilitado, "")
        err.SetError(CBInhabilitado, "")
    End Sub

    Private Sub CargarGrid()
        DGVLista.Rows.Clear()
        listaUsuario = UsuarioBL.GetAllFromUsuario
        If listaUsuario.Count = 0 Then
            btnModificar.Enabled = False
            btnEliminar.Enabled = False
        End If
        Dim i As Integer
        For i = 0 To listaUsuario.Count - 1
            With listaUsuario.Item(i)
                Dim Empleado As Empleado = EmpleadoBL.GetByIdFromEmpleado(.codigoEmpleado)
                DGVLista.Rows.Add(i, .codigoUsuario, Empleado.apellidoPaterno + " " + Empleado.apellidoMaterno + "  " + Empleado.nombreEmpleado, .loginUsuario)
            End With
        Next
    End Sub

    Private Sub nuevo()
        btnModificar.Enabled = False
        btnEliminar.Enabled = False
        btnCancelar.Enabled = True
        btnGuardar.Enabled = True
        btnNuevo.Enabled = False

        CBEEmpleado.Enabled = True
        txtLoginUsuario.Enabled = True
        txtPasswordUsuario.Enabled = True
        CBHabilitado.Enabled = True
        CBInhabilitado.Enabled = True

        DGVLista.Enabled = False

        Call CargarListaEmpleados()

        CBEEmpleado.Focus()
    End Sub

    Private Sub CargarListaEmpleados()
        Dim listaEmpleado As New List(Of Empleado)

        listaEmpleado = EmpleadoBL.GetAllFromEmpleado
        Dim i As Integer = 0
        For i = 0 To listaEmpleado.Count - 1
            listaEmpleado(i).nombreEmpleado = listaEmpleado(i).apellidoPaterno + " " + listaEmpleado(i).apellidoMaterno + " " + listaEmpleado(i).nombreEmpleado
        Next

        CBEEmpleado.DataSource = Nothing
        CBEEmpleado.DataSource = listaEmpleado
        CBEEmpleado.DisplayMember = "nombreEmpleado"
        CBEEmpleado.ValueMember = "codigoEmpleado"

    End Sub

    Private Sub cancelar()

        btnModificar.Enabled = True
        btnEliminar.Enabled = True
        btnCancelar.Enabled = False
        btnGuardar.Enabled = False
        btnNuevo.Enabled = True

        btnNuevo.Enabled = True

        CBEEmpleado.Enabled = False
        txtLoginUsuario.Enabled = False
        txtPasswordUsuario.Enabled = False
        CBHabilitado.Enabled = False
        CBInhabilitado.Enabled = False
        DGVLista.Enabled = True

        CBEEmpleado.Text = ""
        txtLoginUsuario.Text = ""
        txtPasswordUsuario.Text = ""
        CBHabilitado.Checked = True
        txtCodigoUsuario.Text = ""
    End Sub

    Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
        If txtBuscar.Text.Trim.Length = 0 Then
            Call CargarGrid()
        Else
            DGVLista.Rows.Clear()
            listaUsuario = UsuarioBL.SearchFromUsuario(txtBuscar.Text.Trim)
            Dim i As Integer
            For i = 0 To listaUsuario.Count - 1
                With listaUsuario.Item(i)
                    Dim Empleado As Empleado = EmpleadoBL.GetByIdFromEmpleado(.codigoEmpleado)
                    DGVLista.Rows.Add(i, .codigoUsuario, Empleado.apellidoPaterno + " " + Empleado.apellidoMaterno + "  " + Empleado.nombreEmpleado, .loginUsuario)
                End With
            Next
        End If
    End Sub

    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Call nuevo()
        Call clearError()
        Dim item As Integer = DGVLista.Item(0, DGVLista.CurrentRow.Index).Value
        With listaUsuario.Item(item)
            txtCodigoUsuario.Text = .codigoUsuario
            txtLoginUsuario.Text = .loginUsuario
            CBEEmpleado.SelectedValue = .codigoEmpleado
            txtPasswordUsuario.Text = .passwordUsuario
            If .estadoUsuario = "H" Then
                CBHabilitado.Checked = True
            Else
                CBInhabilitado.Checked = True
            End If

        End With


    End Sub

    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If CBEEmpleado.Text.Trim.Length = 0 Then
            err.SetError(CBEEmpleado, "Seleccione una Empleado")
            Return
        Else
            err.SetError(CBEEmpleado, "")
        End If

        If txtLoginUsuario.Text.Trim.Length = 0 Then
            err.SetError(txtLoginUsuario, "LLene el Login del Usuario")
            Return
        Else
            err.SetError(txtLoginUsuario, "")
        End If


        If txtPasswordUsuario.Text.Trim.Length = 0 Then
            err.SetError(txtPasswordUsuario, "LLene el Password del Usuario")
            Return
        Else
            err.SetError(txtPasswordUsuario, "")
        End If
        Dim EstadoUsuario As String
        If CBHabilitado.Checked = True Then
            EstadoUsuario = "H"
        Else
            EstadoUsuario = "I"
        End If

        If (txtCodigoUsuario.Text.Trim.Length > 0) Then
            Dim usuario As New TepcelDominio.Usuario(txtCodigoUsuario.Text, txtLoginUsuario.Text.Trim, txtPasswordUsuario.Text.Trim, EstadoUsuario, CBEEmpleado.SelectedValue.Trim)
            txtCodigoUsuario.Text = UsuarioBL.NuevoUsuario(usuario)
        Else
            Dim usuario As New TepcelDominio.Usuario("", txtLoginUsuario.Text.Trim, txtPasswordUsuario.Text.Trim, EstadoUsuario, CBEEmpleado.SelectedValue.Trim)
            txtCodigoUsuario.Text = UsuarioBL.NuevoUsuario(usuario)
        End If


        Call cancelar()


        Call CargarGrid()

    End Sub

    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim result As DialogResult
        result = MessageBox.Show("confirma que desea Eliminar el Registro seleccionado?", "Eliminar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
        If result = DialogResult.OK Then
            If UsuarioBL.DeleteUsuario(listaUsuario.Item(CInt(DGVLista.Item(0, DGVLista.CurrentRow.Index).Value)).codigoUsuario) Then
                MessageBox.Show("Registro Eliminado Correctamente", "Eliminar", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Call CargarGrid()
            Else
                MessageBox.Show("No se elimino el registro seleccionado", "Eliminar", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        End If
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Call cancelar()
        Call clearError()

        txtBuscar.Focus()

    End Sub

    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
        Call nuevo()
        Call clearError()
    End Sub

    Private Sub CBEEmpleado_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles CBEEmpleado.GotFocus
        CBEEmpleado.SelectionStart = 0
        CBEEmpleado.SelectionLength = CBEEmpleado.Text.Length
    End Sub

    Private Sub CBEEmpleado_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles CBEEmpleado.KeyUp
        Dim sTexto As String
        Dim indiceEncontrado As Integer
        Dim itemEncontrado As Object
        Dim textoItem As String
        Dim agregarTexto As String


        Select Case e.KeyCode
            Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down, Keys.Tab
                Return
        End Select

        sTexto = CBEEmpleado.Text
        indiceEncontrado = CBEEmpleado.FindString(sTexto)

        If indiceEncontrado >= 0 Then
            itemEncontrado = CBEEmpleado.Items(indiceEncontrado)
            textoItem = CBEEmpleado.GetItemText(itemEncontrado)

            agregarTexto = textoItem.Substring(sTexto.Length)
            CBEEmpleado.Text = sTexto & agregarTexto

            CBEEmpleado.SelectionStart = sTexto.Length
            CBEEmpleado.SelectionLength = agregarTexto.Length

        End If

    End Sub

End Class